#include "DopplerGrid.h"
#include <QColor>
#include <QList>
#include <QVarLengthArray>
#include <QPainter>
#include <QStyleOptionGraphicsItem>

DopplerGrid::DopplerGrid(const QColor& color_, QSize& size_)
{
    m_nWidth = size_.width();
    m_nHeight = size_.height();
    m_cColor = color_;
    setZValue(0);
    m_ePenStyle = Qt::DashDotDotLine ;

    setFlags(ItemNegativeZStacksBehindParent);
    //setAcceptsHoverEvents(false);
}

QRectF DopplerGrid::boundingRect() const
{
    return QRectF(0, 0, m_nWidth, m_nHeight);
}

QPainterPath DopplerGrid::shape() const
{
    //this will make mouse no affected by this item
    QPainterPath path;
    path.addRect(0, 0, m_nWidth, m_nHeight);
    return path;
}

void DopplerGrid::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    Q_UNUSED(widget) // to tell the compiler this parameter is not used, do not expose warning
    Q_UNUSED(option)
    //******** to change the background color of when mouse is rect
    QPen _OldPen = painter->pen();
    QPen _NewPen = _OldPen ;
    _NewPen.setWidth(0);
    _NewPen.setColor(m_cColor);
    _NewPen.setStyle(m_ePenStyle);
    painter->setPen(_NewPen);

    double _nTmp = m_nWidth / 8.0;
    QVarLengthArray<QLineF, 7> lines;
    for(int i = 1 ; i < 8 ; i++)
    {
        lines.append(QLineF((int)(i * _nTmp) + 0.5 , 0 , (int)(i * _nTmp) + 0.5, m_nHeight));
    }
    painter->drawLines(lines.data() , 7);
    lines.clear();

    _nTmp = m_nHeight / 6.0;
    for(int i = 1 ; i < 6 ; i++)
    {
        lines.append(QLineF(0 , i *_nTmp + 0.5 , m_nWidth ,  i *_nTmp + 0.5));
    }
    painter->drawLines(lines.data() , 5) ;
    painter->setPen(_OldPen);
}

void DopplerGrid::SetPenStyle(Qt::PenStyle style)
{
    m_ePenStyle = style ;
    update();
}

void DopplerGrid::SetLineColor(QColor& color )
{
    m_cColor = color ;
    update();
}


